package br.com.edoc.entidade;

import java.util.ArrayList;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.JoinTable;
import javax.persistence.ManyToMany;
import javax.persistence.ManyToOne;
import javax.persistence.Table;

@Entity
@Table(name="USUARIO")
public class Usuario implements EntidadePadrao{



	/**
	 * 
	 */
	private static final long serialVersionUID = 548973094691434842L;


	@Id  
	@Column(name = "US_IDDOOBJETO", nullable = false)  
	@GeneratedValue(strategy=GenerationType.IDENTITY)
	private Integer id;
	@Column(name = "US_LOGIN", nullable = false,unique=true, length=120)
	private String login;
	@Column(name = "US_SENHA", nullable = false, length=120)
	private String senha;
	@Column(name = "US_ATIVO")
	private Boolean ativo;
	@Column(name="US_PRIMEIROACESSO")
	private Boolean primeiroAcesso;
//	@ManyToOne (cascade={CascadeType.PERSIST})
//	@JoinColumn(name="PES_IDDOOBJETO")
//	private ServidorPublico servidor;


	    
	@ManyToMany(  
	        targetEntity=br.com.edoc.entidade.Perfil.class,  
	        cascade={CascadeType.PERSIST, CascadeType.MERGE}  
	    )  
	    
	  @JoinTable(name="USARIOPERFIL", 
	      joinColumns=@JoinColumn(name="US_IDDOOBJETO"),
	      inverseJoinColumns=@JoinColumn(name="PRU_IDDOOBJETO"))
	private List<Perfil> listaPerfisUsuario;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}

	public String getLogin() {
		return login;
	}

	public void setLogin(String login) {
		this.login = login;
	}

	public String getSenha() {
		return senha;
	}@ManyToOne (cascade={CascadeType.PERSIST})
//	@JoinColumn(name="PES_IDDOOBJETO")
//	private ServidorPublico servidor;

	public void setSenha(String senha) {
		this.senha = senha;
	}
	public Boolean getPrimeiroAcesso() {
		return primeiroAcesso;
	}

	public void setPrimeiroAcesso(Boolean primeiroAcesso) {
		this.primeiroAcesso = primeiroAcesso;
	}

	public Boolean getAtivo() {
		return ativo;
	}

	public void setAtivo(Boolean ativo) {
		this.ativo = ativo;
	}

	public List<Perfil> getListaPerfisUsuario() {
		if(listaPerfisUsuario == null){
			listaPerfisUsuario = new ArrayList<Perfil>();
		}
		return listaPerfisUsuario;
	}

	public void setListaPerfisUsuario(List<Perfil> listaPerfisUsuario) {
		this.listaPerfisUsuario = listaPerfisUsuario;
	}

//	public ServidorPublico getServidor() {
//		return servidor;
//	}
//
//	public void setServidor(ServidorPublico servidor) {
//		this.servidor = servidor;
//	}
	
	
}
